# 递归函数 如果一个函数在内部不调用其它的函数，而是自己本身的话，这个函数就是递归函数。
# 实例讲解
# 求5！
# print(5*4*3*2*1)
# 使用循环方式实现计算5！
# i=5
# result=1
# while i>0:
#     result=result*i
#     i-=1
#     pass
# print(result)
# 使用递归实现计算5！
# 递归函数必须有一个结束条件，否则递归无法结束会一直递归下去，只到到达最大递归深度报错。
def func1(n):
    if n==1:
        return 1
    return n*func1(n-1)
    pass
print(func1(5))
5*(4*(3*(2*(1))))
# 递归特点：
# 优点：
# 递归使代码看起来更加整洁、优雅。
# 可以用递归将复杂任务分解成更简单的子问题；
# 使用递归比使用一些嵌套迭代更容易
#
# 缺点：
# 递归逻辑很难调试，递归条件处理不好容易造成程序无法结束，直到达到最大递归错误。
# 递归占用大量内存，耗费计算机资源。




